Diff drive and odometry
Table of Content
LAB#
- Add diff drive plugin
- publish
odometry,odometry tfandcmd_velfrom ignition to ros2 using bridge
Note
check joint state post for project structure and files
Note
Install rqt_robotic_steering for GUI cmd_vel control
sudo apt install ros-humble-rqt-robot-steering

bridge#
ign topic --list
#
/clock
/gazebo/resource_paths
/gui/camera/pose
/model/basic_mobile_bot/cmd_vel
/model/basic_mobile_bot/odometry
/model/basic_mobile_bot/tf
/stats
/world/demo/clock
/world/demo/dynamic_pose/info
/world/demo/model/basic_mobile_bot/joint_state
/world/demo/pose/info
/world/demo/scene/deletion
/world/demo/scene/info
/world/demo/state
/world/demo/stats
# cmd_vel bridge
cmd_vel_bridge = Node(package='ros_gz_bridge', executable='parameter_bridge',
namespace = namespace,
name = 'cmd_vel_bridge',
output='screen',
parameters=[{
'use_sim_time': use_sim_time
}],
arguments = [
ign_model_prefix + '/cmd_vel' + '@geometry_msgs/msg/Twist' + ']ignition.msgs.Twist'
],
remappings = [
(ign_model_prefix + '/cmd_vel', '/cmd_vel')
])
# odometry bridge
odometry_bridge = Node(package='ros_gz_bridge', executable='parameter_bridge',
namespace = namespace,
name = 'odometry_bridge',
output='screen',
parameters=[{
'use_sim_time': use_sim_time
}],
arguments = [
ign_model_prefix + '/odometry' + '@nav_msgs/msg/Odometry' + '[ignition.msgs.Odometry'
],
remappings = [
(ign_model_prefix + '/odometry', '/odom')
])
# odom to base_link transform bridge
odom_base_tf_bridge = Node(package='ros_gz_bridge', executable='parameter_bridge',
namespace = namespace,
name = 'odom_base_tf_bridge',
output = 'screen',
parameters=[{
'use_sim_time': use_sim_time
}],
arguments = [
ign_model_prefix + '/tf' + '@tf2_msgs/msg/TFMessage' + '[ignition.msgs.Pose_V'
],
remappings = [
(ign_model_prefix + '/tf', '/tf')
])
get bridge source#
tf#
